﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Banesco.Logica;
using ProntoCompra.Logica;
using Banesco.Entidades;
using System.Configuration;
using LogicStudio.HashEncode;

namespace WebCliente.Pages
{
    public partial class Registro : BanescoBase
    {
        BSBanesco objBS = new BSBanesco();
        BSEIBS objIBS = new BSEIBS();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CargarTipoCliente();
                //CargarPaises();
                //CargarTipoIdentificacion();
            }
        }

        protected void CargarPaises()
        {
            DataSet dsDatos = new DataSet();

            objBS.ObtenerPaises(ref dsDatos);
            DDLPais.DataSource = dsDatos;
            DDLPais.DataTextField = "pa_descripcion";
            DDLPais.DataValueField = "pa_codigo";
            DDLPais.DataBind();

            DDLPais.Items.Insert(0, new ListItem("Seleccione pais", "%"));
        }

        //protected void CargarTipoIdentificacion()
        //{
        //    DataSet dsDatos = new DataSet();

        //    // objBS.ObtenerTipoIdentificacion(ref dsDatos);
        //    DDLTipoIdentificacion.DataSource = dsDatos;
        //    DDLTipoIdentificacion.DataTextField = "TipoIdentificacion";
        //    DDLTipoIdentificacion.DataValueField = "IDTipoIdentificacion";
        //    DDLTipoIdentificacion.DataBind();

        //    DDLTipoIdentificacion.Items.Insert(0, new ListItem("Seleccione Tipo de Identificación", "%"));
        //}

        protected void CargarTipoCliente()
        {
            DataSet dsDatos = new DataSet();

            objBS.ObtenerTipoCliente(ref dsDatos);
            DDLTipoCliente.DataSource = dsDatos;
            DDLTipoCliente.DataTextField = "TipoCliente";
            DDLTipoCliente.DataValueField = "IDTipoCliente";
            DDLTipoCliente.DataBind();

            DDLTipoCliente.Items.Insert(0, new ListItem("Seleccione tipo de cliente", "%"));
        }

        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            Mensaje retMensaje = new Mensaje();

            int _times = 0;
            int _timesIP = 0;
            //PersonalCustMessage oPer = objIBS.personalCustomerInquiry("8-700-321", "600007402");


            objBS.VerificarIntentosIP(Request.UserHostAddress, ref _timesIP);
            objBS.VerificarIntentosDeRegistro(txtEmail.Text, ref _times);

            //elimar la siguiente linea de codigo, habilitado solo para pruebas
            _times = 0;
            _timesIP = 0;
            if ((_times < Convert.ToInt32(ConfigurationManager.AppSettings["RegistrosPorCorreo"].ToString())) & (_timesIP < Convert.ToInt32(ConfigurationManager.AppSettings["RegistrosPorIP"].ToString())))
            {
                try
                {
                    int ret = 0;

                    retMensaje = objBS.RegistrarCliente(txtCliente.Text, DDLTipoCliente.SelectedValue, txtEmail.Text, "I", string.Format("Host:{0} | IP:{1} | Browser:{2}", Request.UserHostName, Request.UserHostAddress, Request.Browser.Type), ref ret, Request.UserHostAddress);

                    if (retMensaje.Status == Mensaje.EnumStatus.OK)
                    {
                        string emailParticipante = txtEmail.Text;
                        string nombreParticipante = txtCliente.Text;
                        string asuntoEmail = "Solicitud de Apertura de Cuenta – Banesco";
                        string plantilla = string.Empty;

                        bool correo_enviado = true;

                        LogicMail correo = new LogicMail();
                        plantilla = Resources.BanescoTemplates.EMailTemplate.ToString();
                        plantilla = plantilla.Replace("[Usuario]", nombreParticipante);

                        string url = ConfigurationManager.AppSettings["EmailDomain"];
                        string fechaInscripcion = DateTime.Now.ToString();
                        //string fechaInscripcion = DateTime.Now.AddDays(-2).ToString();
                        string dia = DateTime.Now.Day.ToString();
                        string mes = DateTime.Now.Month.ToString();
                        string año = DateTime.Now.Year.ToString();
                        if (dia.Length <= 1)
                        {
                            dia = "0" + dia;
                        }
                        if (mes.Length <= 1)
                        {
                            mes = "0" + mes;
                        }
                        //string fechaInscripcion = DateTime.Now.AddDays(-2).ToString();
                        string mensajeEncriptar = ret.ToString() + "T" + dia + "T" + mes + "T" + año;
                        string mensajeEncriptado = LogicStudioEncodeManager.EncriptarMensaje(mensajeEncriptar.ToString());

                        if (DDLTipoCliente.SelectedValue == "PERSO")
                        {
                            plantilla = plantilla.Replace("[URL]", url + "Pages/FrmAperturaNatural.aspx?HASH=" + mensajeEncriptado.ToString());
                        }
                        else
                        {
                            plantilla = plantilla.Replace("[URL]", url + "Pages/FrmAperturaJuridica.aspx?HASH=" + mensajeEncriptado.ToString());

                        }
                        try
                        {
                            correo_enviado = correo.EnviarMensaje(emailParticipante, asuntoEmail, plantilla, true);

                            string mensaje = "";
                            mensaje = " Estimado" + nombreParticipante + ", ";
                            mensaje += "Se ha recibido su solicitud preliminar como interesado en apertura de cuenta con Banesco. Adjuntamos al correo una dirección web que le permitirá acceder al formulario preliminar de apertura de cuentas para que sea completado por usted y posteriormente se acerque a la sucursal más cercana de Banesco. ";
                            mensaje += url + "Pages/FrmPreliminar.aspx?ID=" + mensajeEncriptado.ToString();

                            objBS.RegistrarMensaje(txtIdentificacion.Text, mensaje);
                        }
                        catch (Exception)
                        {
                        }
                    }
                    if (retMensaje.Status == Mensaje.EnumStatus.OK)
                    {
                        Session[Constantes.SESIONERRORES] = Constantes.MENSAJEREGISTROSATISFACTORIO;
                        Response.Redirect("/Pages/mensajes.aspx");

                        //ShowStatus("Estimado usuario confirmamos que su solicitud ha sido recibida, le estaremos enviando un correo electrónico con instrucciones para completar su solicitud de apertura de cuenta.");
                    }
                    else
                    {
                        Session[Constantes.SESIONERRORES] = Constantes.MENSAJEREGISTRONOSATISFACTORIO;
                        Response.Redirect("/Pages/mensajes.aspx");

                        //ShowStatus("Lo sentimos, su información no se pudo procesar en estos momentos. Porfavor intente más tarde.");

                    }
                    LimpiarCampos();
                }
                catch (Exception ex)
                {
                }
            }
            else
            {

                Session[Constantes.SESIONERRORES] = Constantes.ERRORSUPERACANTIDADMAXIMAREGISTROS;
                Response.Redirect("/Pages/mensajes.aspx");

                //ShowStatus("Estimado usuario confirmamos que su solicitud ha sido recibida, nuestro personal se pondrá en contacto con usted para continuar el proceso de apertura de cuenta o usted puede acercarse a una de nuestras sucursales.");
            }
        }

        protected void LimpiarCampos()
        {
            DDLTipoCliente.SelectedIndex = 0;
            DDLPais.SelectedIndex = 0;
            DDLTipoIdentificacion.SelectedIndex = 0;
            txtIdentificacion.Text = "";
            txtCliente.Text = "";
            txtEmail.Text = "";
            txtTelefono.Text = "";
        }

        protected void cvPais_ServerValidate(object source, ServerValidateEventArgs args)
        {

            if (DDLTipoCliente.SelectedValue != "%")
            {
                args.IsValid = true;

            }
            else
            {
                args.IsValid = false;
                return;
            }
        }

        protected void DDLTipoCliente_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDLTipoCliente.SelectedValue == "PERSO")
            {
                lblNombre.Text = "Nombre:";

            }
            else
            {
                lblNombre.Text = "Nombre de la Empresa:";
            }
        }
    }
}
